package com.example.computer_exam_training_sys.service;

import com.example.computer_exam_training_sys.dto.MessageDTO;
import com.example.computer_exam_training_sys.entity.UserMessage;
import com.example.computer_exam_training_sys.vo.MessageVO;

import java.util.List;

public interface UserMessageService {
    // 创建消息
    MessageVO createMessage(Long senderId, MessageDTO messageDTO);
    
    // 获取消息详情
    MessageVO getMessageById(Long messageId, Long userId);
    
    // 获取用户接收的消息列表
    List<MessageVO> getReceivedMessages(Long userId);
    
    // 获取用户发送的消息列表
    List<MessageVO> getSentMessages(Long userId);
    
    // 获取已发布的消息（公告和课程通知）
    List<MessageVO> getPublishedMessages(String messageType, Long userId);
    
    // 获取待处理消息数量
    int getPendingMessageCount(Long userId);
    
    // 更新消息状态
    void updateMessageStatus(Long messageId, String status, Long userId);
    
    // 更新消息内容
    MessageVO updateMessage(Long messageId, MessageDTO messageDTO, Long userId);
    
    // 删除消息
    void deleteMessage(Long messageId, Long userId);
    
    // 创建笔记分享消息
    MessageVO createShareNoteMessage(Long senderId, Long receiverId, Long noteId);
    
    // 创建系统公告
    MessageVO createAnnouncement(Long senderId, MessageDTO messageDTO);
    
    // 创建课程通知
    MessageVO createCourseNotice(Long senderId, Long courseId, MessageDTO messageDTO);
    
    // 获取未读消息数量
    int getUnreadMessageCount(Long userId);
    
    // 管理员：获取所有消息
    List<MessageVO> getAllMessages(Long adminId, String messageType);
} 